home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / standards / sgml / nist / parse3 / semantic.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-09-13  |  5.3 KB  |  130 lines

  1. /* National Institute of Standards and Technology (NIST)
  2. /* National Computer System Laboratory (NCSL)
  3. /* Office Systems Engineering (OSE) Group
  4. /* ********************************************************************
  5. /*                            D I S C L A I M E R
  6. /*                              (March 8, 1989)
  7. /*  
  8. /* There is no warranty for the NIST NCSL OSE SGML parser and/or the NIST
  9. /* NCSL OSE SGML parser validation suite.  If the SGML parser and/or
  10. /* validation suite is modified by someone else and passed on, NIST wants
  11. /* the parser's recipients to know that what they have is not what NIST
  12. /* distributed, so that any problems introduced by others will not
  13. /* reflect on our reputation.
  14. /* 
  15. /* Policies
  16. /* 
  17. /* 1. Anyone may copy and distribute verbatim copies of the SGML source
  18. /* code as received in any medium.
  19. /* 
  20. /* 2. Anyone may modify your copy or copies of SGML parser source code or
  21. /* any portion of it, and copy and distribute such modifications provided
  22. /* that all modifications are clearly associated with the entity that
  23. /* performs the modifications.
  24. /* 
  25. /* NO WARRANTY
  26. /* ===========
  27. /* 
  28. /* NIST PROVIDES ABSOLUTELY NO WARRANTY.  THE SGML PARSER AND VALIDATION
  29. /* SUITE ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
  30. /* EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  31. /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  32. /* THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS
  33. /* WITH YOU.  SHOULD THE SGML PARSER OR VALIDATION SUITE PROVE DEFECTIVE,
  34. /* YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  35. /* 
  36. /* IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL NIST BE LIABLE FOR
  37. /* DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL,
  38. /* INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
  39. /* INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
  40. /* BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A
  41. /* FAILURE OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY
  42. /* NIST) THE PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF
  43. /* SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.
  44. */
  45.  
  46. /************************************************************************/
  47. /*   TITLE:          SGML PARSER                                        */
  48. /*   SYSTEM:         DOCUMENT PROCESSOR                                 */
  49. /*   SUBSYSTEM:                                                         */
  50. /*   SOURCE FILE:    SEMANTIC.C                                         */
  51. /*   AUTHOR:         Steven Lindeman, Fred Maples                       */
  52. /*                                                                      */
  53. /*   DATE CREATED:                                                      */
  54. /*   LAST MODIFIED:                                                     */
  55. /*                                                                      */
  56. /*                  REVISIONS                                           */
  57. /*   WHEN      WHO            WHY                                       */
  58. /************************************************************************/
  59.  
  60. #include <stdio.h>
  61. #include "semantic.h"
  62. /*------------------------------------------------------*/
  63. /*------------------------------------------------------*/
  64. /*------------------------------------------------------*/
  65. /* 
  66.    This function is called by the parser at 'significant' points in
  67.    the document.  These points are identified by the value of the
  68.    variable 'code' which will be:
  69.  
  70.       1.  END_TAG_NAME - when an end tag is encountered, e.g.,
  71.           </para>; str1 will point to a null terminated string
  72.           containing the element name.
  73.       2.  TAG_NAME - when a start tag is encountered, e.g., <para>;
  74.           this will be followed by 0 or more calls to this function
  75.           with code = TAG_ATTR; str1 will point to a null terminated 
  76.           string containing the element name.
  77.       3.  TAG_ATTR - this value is passed for each attribute associated
  78.           with a start tag; str1 will point to a null terminated string
  79.           containing the attribute name, str2 will point to a null 
  80.           terminated string containing the attribute value.
  81.       4.  TAG_END - this value is passed when there are no more
  82.           attributes associated with a start tag.
  83.       5.  DATA_STG - this value is passed to give text (not markup)
  84.           to the application; str1 points to a null terminated
  85.           character string.
  86.  
  87.       6.  PROC_INST - this value is passed to give the content of a 
  88.           processing instruction to the application; str1 points to 
  89.           a null terminated character string.
  90. */
  91. void semantics(code,str1,str2)
  92. int code;
  93. char *str1,*str2;
  94. {
  95.  
  96.      switch(code) {
  97.      case END_TAG_NAME:
  98. #ifdef APPL_DEBUG
  99.        printf("*** END_TAG_NAME='%s' ***\n",str1);
  100. #endif
  101.        break;
  102.      case TAG_NAME:
  103. #ifdef APPL_DEBUG
  104.        printf("*** TAG_NAME='%s' ***\n",str1);
  105. #endif
  106.        break;
  107.      case TAG_ATTR:
  108. #ifdef APPL_DEBUG
  109.        printf("*** TAG_ATTR='%s'='%s' ***\n",str1,str2);
  110. #endif
  111.        break;
  112.      case TAG_END:
  113. #ifdef APPL_DEBUG
  114.        printf("*** TAG_END ***\n");
  115. #endif
  116.        break;
  117.      case DATA_STG:
  118. #ifdef APPL_DEBUG
  119.        printf("*** DATA_STG='%s' ***\n",str1);
  120. #endif
  121.        break;
  122.      case PROC_INST:
  123. #ifdef APPL_DEBUG
  124.        printf("*** PROC_INST='%s' ***\n",str1);
  125. #endif
  126.        break;
  127.      }
  128.     return;
  129. }
  130.